/***********************************************************************************************************************
 * ############################################# Application AdewebLite #############################################
 * AdewebLite Android est une application permettant de consulter des emplois du temps fournis par l'université UHP
 * avec ou sans connexion internet (informations gardées en mémoire à chaque synchronisation). Et utilisant la web
 * API ADE pour collecter les données.
 * @author Andrianjafintrimo Victor, Zanette Sébastien
 * 
 * Basée sur l'application du même nom, utilisant le flux RSS (données à traiter), de :
 * @author Schnell Michaël, Zanette Sébastien
 * **********************************************************************************************************************
 */

package ade.prime.activity.parameters;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import ade.prime.activity.R;
import ade.prime.config.Config;
import ade.prime.model.Project;
import android.app.Activity;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;

/**
 * Champ 'ProjectId' du formulaire de création/modification d'un emploi du temps.
 * @author Seb
 */
public class ScheduleProject extends ParameterType {

	public static final String FIELD_ID = "project" ; //$NON-NLS-1$
	private static final int DEFAULT_SELECTION = 1 ;
	
	private Project project ;
	private Project[] Allprojects;
	private LayoutInflater inflater;

	private Spinner projects;
	private List<String> projectsName;
	private List<Integer> projectsID;

	/**
	 * Constructeur.
	 * @param inflater
	 * @param project 
	 * @param projects 
	 */
	public ScheduleProject(LayoutInflater inflater, Project project, Project[] projects) {
		super(FIELD_ID) ;
		this.inflater = inflater ;
		this.project = project ;
		this.Allprojects = projects;
	}

	/**
	 * Fixe le champ ProjetId à la valeur donnée en paramètre.
	 * @param projectId 
	 */
	public void setProject(Project projectId) {
		this.project = projectId;
	}

	/**
	 * Retourne l'entier associé projet choisi par l'utilisateur.
	 * @param view Vue
	 * @return entier associé au bouton choisi par l'utilisateur
	 */
	@Override
	public Project getValue(View view) {
		return this.project ;
	}

	/**
	 * Retourne la vue du champ 'ProjectId' (Spinner).
	 * @param convertView vue du champ dans le formulaire de création/modification
	 * @param parent Vue parente
	 * @return vue du champ 'ProjectId'
	 */
	@Override
	public View getView(View convertView, ViewGroup parent) {
		View v = this.inflater.inflate(R.layout.type_schedule_project_id, null) ;

		this.initView(v) ;

		return v ;
	} 

	public void init() {
		this.projectsID = new ArrayList<Integer>();
		this.projectsName = new ArrayList<String>();
		for (Project p : Allprojects) {
			this.projectsName.add(p.getProjectName());
			this.projectsID.add(p.getAdeProjectId());
		}
	}
	/**
	 * Initialise la vue.
	 * @param convertView 
	 */
	public void initView(View convertView) {
		this.projects = (Spinner)convertView.findViewById(R.id.spinner) ;
		this.init();
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(convertView.getContext(),android.R.layout.simple_spinner_item, projectsName);
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		this.projects.setAdapter(adapter);

		int selectedIndex = DEFAULT_SELECTION ;
		if (this.project != null) {
			selectedIndex = this.getPositionFromProjectId(this.project.getAdeProjectId()) ;
		}// if
		this.projects.setSelection(selectedIndex) ;
	}
	
	private int getPositionFromProjectId(int adeProjectId) {
		return this.projectsID.indexOf(adeProjectId) ;
	}

	private Object getProjectWithPosition(int selectedItemPosition) {	
		return this.projectsID.get(selectedItemPosition);
	}


}
